Digital image sensing systems are well known in the art. In practice, such systems may be included in digital cameras, cellular telephones, digital video cameras, etc. A key component of such image sensing systems are the image sensors, such as arrays of light-sensitive charge-coupled device (CCD) or complementary metal oxide semiconductor (CMOS) sensors (pixels), that convert light into digital signals. Ideally, such sensors arrays provide flawless conversion of the incident light, i.e., each sensor responds identically to all other sensors in the array. In practice, however, this is typically not the case. Due to fundamental imperfections in the individual sensors, a finite number of pixels will be defective. Such defects typically fall into two categories.
In a first category, sometimes referred to as hard faults, a given pixel is “stuck” at a given value and is invariant to incident light. For example, a “white” pixel (assuming a gray-scale sensor, although the principle applies equal to color formats) will always have a value at or near the maximum pixel value (e.g., a value of 255 assuming each pixel output is represented in an 8-bit format) regardless of the incident light. Similarly, a “black” pixel will always have a value at or near the minimum pixel value (e.g., a value of 0) regardless of the incident light. In a second category, sometimes referred to as soft faults, pixels are responsive to incident light but deviate visibly from normal response values. For example, a “bright” pixel will saturate much quicker in response to a given level of incident illumination when compared to normal pixels. On the other hand, a “dark” pixel will saturate much more slowly in response to a given level of incident light than a normal pixel.
Both categories of faults are illustrated in FIG. 1, which illustrates pixel behavior, i.e., output value, as a function of exposure and temperature. Note that, as know in the art and as used herein, the term “pixel” may refer to specific locations within an image sensor array or image, or to a specific values corresponding to such locations. An ideal response curve 102 illustrates that, generally, the value of a pixel increases in a linear fashion in accordance with increased exposure and/or temperature. For present purposes, it is assumed that temperatures do not vary greatly and that pixel behavior is more significantly driven by exposure lengths. The shaded region around the ideal response curve 102 illustrates a typical “good” pixel range and is shown to include a response curve of a good pixel 104 falling within the tolerance limits of the ideal response curve 102. FIG. 1 further illustrates behavior of the various categories of bad pixels. For example, a white pixel 106 exhibits the same value (in this case, 255 assuming an 8-bit black and white representation) regardless of the level of exposure. Similarly, a black pixel 108 has a value of 0 regardless of the level of exposure. A bright pixel 110 and a dark pixel 112 are also shown. In essence, the bright pixel 110 and dark pixel 112 exhibit different gain values causing those pixels to either saturate too quickly or too slowly.
A way to combat these “bad” pixels is to store a list of the positions of such pixels in a memory. Typically during image pre-processing, the pixel values corresponding to each such bad pixel is replaced by, for example, the average of the surrounding pixels. While this method (sometimes referred to as static bad pixel processing) is relatively easy to implement (and is therefore preferable), it cannot handle pixel faults that appear intermittently. Furthermore, the stored information identifying each bad pixel is determined by the manufacturer of the sensor array and is invariant thereafter.
Another technique to correct bad pixels (sometimes referred to as dynamic bad pixel detection) uses relatively sophisticated processing techniques to identify and correct bad pixels. Because this technique does not rely on a fixed indication of bad pixels, it can catch intermittently bad pixels. However, they are relatively expensive to implement and, perhaps of greater significance, such filters also tend to remove useful detail from images. For example, and with reference to FIGS. 2 and 3, consider the example of a point source of light. Given the physical limitations of image sensing systems, even the smallest source of light will typically be spread across multiple pixels as illustrated in FIG. 2. As shown in FIG. 2, the point source of light results in a first white pixel 202 surrounded by pixels of varying shades of gray 204, 206 and, further away, by essentially black pixels 208. In contrast, as illustrated in FIG. 3, a bad pixel 302 results in abrupt contrast boundaries with its surrounding pixels. These differences are further illustrated in FIGS. 4 and 5 each comprising a one-dimensional cross section along the middle row of FIGS. 2 and 3, respectively. As shown in FIG. 4, the white pixel 202 (labeled c) is surrounded by gradually transitioning pixels (labeled a, b, d and e). In contrast, the bad pixel 302 (labeled c′) has no transitioning neighboring pixels (labeled a′, b′, d′ and e′). Although dynamic bad pixel detection and correction can identify the existence of the bad pixel 302, there is a chance that it will also modify the good pixel 202 and its neighbors 106-108 unnecessarily, depending on how the dynamic bad pixel detection is configured.
Accordingly, it would be advantageous to provide a technique which provides the benefits of both static and dynamic bad pixel detection while overcoming their respective shortcomings described above.